package com.quan.common.utils.oss.common.qiniu;

import java.util.Map;

public class DomainHolder {
	
	// 缓存Bucket空间域名,将空间域名存放到ThreadLocal中，这样在没有单独开线程的情况下，业务系统任意代码位置都可以取得当前User
	private static final ThreadLocal<Map<String, Object>> DOMAIN_THREAD_LOCAL = new ThreadLocal<Map<String, Object>>();
	
	private DomainHolder() {
	}
	
	/**
	 * 获取SSOUser实例，此方法从ThreadLocal中获取，当调用处代码与请求主线程不处于同一线程时，此方法无法获取SSOUser实例
	 * 
	 * @return
	 */
	public static Map<String, Object> getDomain() {
		return DOMAIN_THREAD_LOCAL.get();
	}

	/**
	 * 用户加入到threadLocal供业务系统使用<br>
	 * 以default为方法作用范围，仅本包内代码可以访问，将次方法对用户代码隐藏
	 * 
	 * @param user
	 * @param request
	 */
	public static void setDomain(Map<String, Object> map) {
		DOMAIN_THREAD_LOCAL.set(map);
	}
	
	public static void removeUser() {
		DOMAIN_THREAD_LOCAL.remove();
	}
	
	

	/**
	 * 缓存空间域名到ThreadLocal
	 * @param bucketName
	 * @param domain
	 *//*
	public static void setDomain(String bucketName, String domain) {
		Map<String, Object> map = DOMAIN_THREAD_LOCAL.get() ;
		if(null == map) {
			map = new HashMap<String, Object>() ;
		}
		map.put(bucketName, domain) ;
		
		DOMAIN_THREAD_LOCAL.set(map) ;
	}
	
	*//**
	 * 从ThreadLocal缓存中获取空间域名
	 * @param bucketName
	 * @return
	 *//*
	public static String getDomain(String bucketName) {
		Map<String, Object> map = DOMAIN_THREAD_LOCAL.get() ;
		if(null != map) {
			return map.get(bucketName).toString() ;
		}
		return null ;
	}
	
	*//**
	 * 从ThreadLocal缓存中获取空间域名
	 * @param bucketName
	 * @return 返回Map
	 *//*
	public static Map<String, Object> getDomainMap(String bucketName) {
		return DOMAIN_THREAD_LOCAL.get() ;
	}*/
	
}
